/**
 *Copyright (c) 2024 watereyes
 * safetymanagement is licensed under Mulan PubL v2.
 * You can use this software according to the terms and conditions of the Mulan
 * PubL v2.
 * You may obtain a copy of Mulan PubL v2 at:
 *          http://license.coscl.org.cn/MulanPubL-2.0
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PubL v2 for more details.
 */
package com.koron.report.service.api;

import com.koron.common.bean.StaffBean;
import com.koron.report.bean.*;
import org.swan.bean.MessageBean;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface DangerAnalysisService {

    /**
     * 根据部门编码统计子部门的隐患情况
     * @param updateTimeStart
     * @param updateTimeEnd
     * @param code
     * @return
     */
    MessageBean<List<DangerAnalysis>> queryCountDanger(Date updateTimeStart, Date updateTimeEnd, String code);

    /**
     * 各水司的隐患统计情况
     * @param updateTimeStart
     * @param updateTimeEnd
     * @param code
     * @return
     */
    //MessageBean<List<DangerAnalysis>> queryCountDangerByCorp(Date updateTimeStart, Date updateTimeEnd,String code);

    /**
     * 统计集团或者某个部门隐患的具体情况
     * @param updateTimeStart
     * @param updateTimeEnd
     * @param code
     * @return
     */
    MessageBean<DangerAnalysis> countDanger(Date updateTimeStart, Date updateTimeEnd, String code);

    /**
     *指定部门下的子部门的危险源统计分析列表
     * @param updateTimeStart
     * @param updateTimeEnd
     * @param code
     * @return
     */
    MessageBean<List<LocalHazarsSourceAnalysis>> queryCountRiskHazardSource(Date updateTimeStart, Date updateTimeEnd, String code);

    /**
     * 集团下看各水司下危险源的统计分析
      * @param updateTimeStart
     * @param updateTimeEnd
     * @return
     */
   // MessageBean<List<LocalHazarsSourceAnalysis>> queryCountRiskHazardSourceByCorp(Date updateTimeStart, Date updateTimeEnd, String code);

    /**
     *  统计集团或者某个部门下危险源的具体情况
     * @param updateTimeStart
     * @param updateTimeEnd
     * @param code
     * @return
     */
    MessageBean<LocalHazarsSourceAnalysis> countRiskHazardSource(Date updateTimeStart, Date updateTimeEnd, String code);

    /**
     * 集团下各片区下的/片区下水司的任务统计分析列表
     * @param updateTimeStart
     * @param updateTimeEnd
     * @param code
     * @return
     */
    MessageBean<List<UserTaskAnalysis>> queryCountUserTask(Date updateTimeStart, Date updateTimeEnd, String code);

    /**
     * 集团下看各水司下任务的统计分析
     * @param updateTimeStart
     * @param updateTimeEnd
     * @return
     */
    MessageBean<List<UserTaskAnalysis>> queryCountUserTaskByCorp(Date updateTimeStart, Date updateTimeEnd, String code);

    /**
     *  统计集团或者某个片区下任务的具体情况
     * @param updateTimeStart
     * @param updateTimeEnd
     * @param code
     * @return
     */
    MessageBean<UserTaskAnalysis> countUserTask(Date updateTimeStart, Date updateTimeEnd, String code);

    /**
     * 集团下各片区下的/片区下水司的安全检查统计分析列表
     * @param updateTimeStart
     * @param updateTimeEnd
     * @param code
     * @return
     */
    MessageBean<List<CheckRecordAnalysis>> queryCountCheckRecord(Date updateTimeStart, Date updateTimeEnd, String code);

    /**
     * 统计集团或者某个片区下安全检查的具体情况
     * @param updateTimeStart
     * @param updateTimeEnd
     * @param code
     * @return
     */
    MessageBean<List<CheckRecordAnalysis>> queryCountCheckRecordByCorp(Date updateTimeStart, Date updateTimeEnd,String code);

    /**
     *  统计集团或者某个片区下安全检查的具体情况
     * @param updateTimeStart
     * @param updateTimeEnd
     * @param code
     * @return
     */
    MessageBean<CheckRecordAnalysis> countCheckRecord(Date updateTimeStart, Date updateTimeEnd, String code);

    Map<String,String> getAnalysisDateMap();

    MessageBean<List<AccidentBulletinAnalysis>> getAccidentAnalysis(String code, String startTime, String endTime);

    MessageBean<Map> homePageAnalysis(StaffBean user, String corpCode, Date startTime, Date endTime);

    MessageBean<DangerAnalysis> getCountAnalysisDanger(Date updateTimeStart, Date updateTimeEnd, String code);

    MessageBean<List> getTable();

    MessageBean<List<DangerAnalysis>> analysisDanger(Date updateTimeStart, Date updateTimeEnd, String code);
}
